home *** CD-ROM | disk | FTP | other *** search
- ¢¢;INCLUDE"D3:SYS.ACT"¢¢CARD ARRAY EOM(1)¢¢BYTE ERRNUM,DD=54018,DATA=54016,JIF=20¢BYTE ARRAY BUF,XMOBUFF(128),buffer(4096)¢¢CARD A¢¢;***********************************¢¢;Burst I/O routines¢PROC WriteBlock=*(BYTE dev, CARD addr, size)¢ [$48$A9$B$85$A5$A9$0$85$A6$A5$A3$5$A4$D0$2$68$60$68]¢CHAR FUNC CIO=*(BYTE dev, CARD addr,size, BYTE cmd,aux1,aux2)¢ [$29$F$85$A0$86$A1$A$A$A$A$AA$A5$A5$9D$342$A5$A3$9D$348$A5$A4$9D$349$A5$A6$F0$8$9D$34A$A5$A7$9D$34B$98$9D$345¢ $A5$A1$9D$344$20$E456$8C Errnum$C0$88$D0$6$98$A4$A0$99 EOF$60]¢CARD FUNC ReadBlock=*(BYTE dev, CARD addr, size)¢ [$48$A9$7$85$A5$A9$0$85$A6$A5$A3$5$A4$D0$6$85$A0$85$A1$68$60$68$20 CIO$BD$348$85$A0$BD$349$85$A1$60]¢¢¢BYTE FUNC UPPER(BYTE A)¢ WHILE A>95 DO A==-32 OD¢RETURN(A)¢¢PROC EDITFN(BYTE ARRAY FN)¢byte a¢BYTE ARRAY TMPBUF(40)¢ FOR A=1 TO FN(0) DO¢ fn(A)=UPPER(fn(A))¢ OD¢ IF FN(2)=': OR FN(3)=': THEN RETURN FI¢ MOVEBLOCK(XMOBUFF+3,FN+1,FN(0))¢ XMOBUFF(0)=FN(0)+2¢ MOVEBLOCK(FN,XMOBUFF,XMOBUFF(0)+1)¢ FN(1)='D¢ FN(2)=':¢RETURN¢¢proc sendbyte(byte a)¢; mask=7¢ data=a&3¢ a==rsh 2¢ while data&8 do od¢ data=a&3%4¢ a==rsh 2¢ do until data&8 od¢ data=a&3¢ a==rsh 2¢ while data&8 do od¢ data=a&3%4¢ do until data&8 od¢return¢¢¢byte func recbyte()¢byte rb,B1,B2,B3,B4¢; mask=8¢ while data&4 do od¢ B1=data&3¢ data=0¢ do until data&4 od¢ B2=data&3¢ data=8¢ while data&4 do od¢ B3=data&3¢ data=0¢ do until data&4 od¢ B4=data&3¢ data=8¢ RB=B4¢ RB==LSH 2+B3¢ RB==LSH 2+B2¢ RB==LSH 2+B1¢return(rb)¢¢¢PROC SEND(byte array xmonam)¢¢BYTE A1,A2,BLOCKNUM,CKSUM,FINISHED¢CARD READSIZE,bytesleft¢¢ DD=56 data=7¢ DD=60 data=15¢ FINISHED=0¢ close(2)¢ editfn(xmonam)¢ open(2,xmonam,4,0)¢ PRINT("¢¢Sending file ")¢ printe(XMONAM)¢ bytesleft=0¢ blocknum=1¢ do¢ if FINISHED=0 AND bytesleft<128 then¢ bytesleft=readblock(2,buffer,4096)¢ IF EOF(2) THEN FINISHED=1 FI¢ fi¢ moveblock(xmobuff,buffer,128)¢ moveblock(buffer,buffer+128,4096)¢ if BYTESLEFT<128 then¢ for a1=bytesleft to 127 do¢ xmobuff(a1)=bytesleft¢ od¢ IF FINISHED=1 THEN FINISHED=2 FI¢ fi¢ bytesleft==-128¢ PRINT(" Block ")¢ PRINTCE(BLOCKNUM)¢ CKSUM=0¢ sendbyte(1)¢ sendbyte(BLOCKNUM&255)¢ sendbyte(255!(BLOCKNUM&255))¢ FOR A1=0 TO 127 DO¢ A2=XMOBUFF(A1)¢ sendbyte(A2)¢ CKSUM==+A2¢ OD¢ sendbyte(CKSUM)¢ BLOCKNUM==+1¢ UNTIL FINISHED=2 OD¢ sendbyte(4)¢ close(2)¢ DD=56 data=15¢ DD=60 data=15¢RETURN¢¢¢PROC RECV(byte array xmonam)¢¢BYTE BLKTHEM,CKTHEM,CKUS,FINISHED,¢ BBC,a1,a2,quit¢CARD BYTECNT,blkcnt,dmpcnt¢¢ DD=56 data=8¢ DD=60 data=15¢ QUIT=0¢ BYTECNT=0¢ FINISHED=0¢ BLkcnt=1¢ close(2)¢ editfn(xmonam)¢ open(2,xmonam,8,0)¢ PRINT("¢¢Receiving file ")¢ PRINTE(XMONAM)¢ DO¢ a1=recbyte()¢ if quit then return fi¢ if a1=1 then¢ PRINT(" Block ")¢ printce(blkcnt)¢ a1=recbyte()¢ a2=recbyte()¢ if (a2!255)=a1 and a1=(blkcnt&255) then¢ ckus=0¢ for a1=0 to 127 do¢ a2=recbyte()¢ xmobuff(a1)=a2¢ ckus==+a2¢ od¢ ckthem=recbyte()¢ if ckus=ckthem then¢ blkcnt==+1¢ moveblock(buffer+bytecnt,xmobuff,128)¢ bytecnt==+128¢ if bytecnt=4096 then¢ writeblock(2,buffer,4096)¢ bytecnt=0¢ fi¢ else¢ printe("Bad Checksum")¢ quit=1¢ fi¢ else¢ printe("Bad Block count")¢ quit=1¢ fi¢ elseif a1=4 then¢ a1=buffer(bytecnt-1)¢ for dmpcnt=bytecnt-128+a1 to bytecnt-1 do¢ if buffer(dmpcnt)#a1 then¢ writeblock(2,buffer,bytecnt)¢ CLOSE(2)¢ return¢ fi¢ od¢ writeblock(2,buffer,bytecnt-128+a1)¢ CLOSE(2)¢ return¢ fi¢ od ¢ DD=56 data=15¢ DD=60 data=15¢return¢¢¢PROC MAIN()¢¢BYTE OPT¢BYTE ARRAY FN(60),mf(60)¢¢¢ DEVICE=0¢ CLOSE(7)¢ OPEN(7,"K:",4,0)¢ POKE(82,0)¢ graphics(0)¢ poke(752,1)¢ setcolor(1,0,0)¢ setcolor(2,0,8)¢ setcolor(4,0,4)¢ DO¢ CLOSE(2)¢ CLOSE(1)¢ DD=56 data=15¢ DD=60 data=15¢ PRINT("}¢ - The Better Bit Blast --- BBB...... -¢¢ - Jeff Jones == Sean Puckett -¢ ¢¢¢ ¢ Select transfer option:¢¢ 1. Send file to other computer¢ 2. Receive file")¢ print("¢ 3. Send backup (requires metafile)¢ 4. Receive backup (requires metafile)¢¢ 5. Exit program¢¢¢ Key number of choice ->?")¢ OPT=GETD(7)¢ put(opt)¢ IF OPT='5 THEN [$6C$0A$00] RETURN¢ ELSEIF OPT='2 THEN¢ PRINT("¢¢Receive filename?¢->")¢ INPUTSD(0,FN)¢ IF FN(0) THEN¢ RECV(FN)¢ FI¢ ELSEIF OPT='1 THEN¢ PRINT("¢¢Send filename?¢->")¢ INPUTSD(0,FN)¢ IF FN(0) THEN¢ SEND(FN)¢ FI¢ ELSEIF OPT='3 THEN¢ PRINT("¢¢Send backup: Metafile filename?¢->")¢ inputsd(0,mf)¢ print("¢Sending backup files...¢")¢ OPEN(1,mf,4,0)¢ WHILE EOF(1)=0 DO¢ INPUTSD(1,FN)¢ PRINT(FN)¢ SEND(FN)¢ PUTE()¢ OD¢ CLOSE(1)¢ ELSEIF OPT='4 THEN¢ PRINT("¢Metafile filename¢?")¢ inputsd(0,mf)¢ PRINT("¢Receiving backup files...¢")¢ OPEN(1,mf,4,0)¢ WHILE EOF(1)=0 DO¢ INPUTSD(1,FN)¢ PRINT(FN)¢ RECV(FN)¢ PUTE()¢ OD¢ CLOSE(1)¢ FI¢ OD¢¢RETURN¢¢